home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / clue.lha / clue / doc / clue.tex / node254_mn.html < prev    next >
Text File  |  1989-07-12  |  6KB  |  165 lines

  1.  
  2. <H3><A ID="SECTION007111100000000000000"><tex2html_anchor_invisible_mark></A> <A ID="ch:accessing-resources"><tex2html_anchor_mark></A><BR>
  3. Accessing Resource Values
  4. </H3><#5399#>
  5.            
  6.       
  7.  
  8. <A ID="3567"><tex2html_anchor_invisible_mark></A>
  9. The power and flexibility of resource management are the result of the way
  10. resource values in a resource database are accessed. A resource binding
  11. stored in
  12. the database generally contains only a partial resource name consisting of a
  13. mixture of name and class symbols. To look up a
  14. resource value, one starts with a complete resource name and a
  15. complete resource class. The lookup algorithm then returns the value
  16. for the resource binding whose partial name is the closest match to the complete
  17. name and class given. The definition of ``closest match'' takes into account
  18. the
  19. top-down, parent-child hierarchy of resource names/classes.
  20.  
  21. <P>
  22. The intent of the lookup  algorithm is to formalize an
  23. intuitive notion of ``the closest match''.  
  24.  
  25. <UL>
  26. <LI>Precedence is given to a  match which begins ``higher'' in the
  27. parent-child contact hierarchy. This allows a resource binding with a partial
  28. name to define a resource value shared by all members of a contact subtree.
  29.  
  30. <P>
  31. </LI>
  32. <LI>Precedence is given to the more specific match. A name match is more
  33. specific than a class match. 
  34.  
  35. <P>
  36. </LI>
  37. <LI>The more name/class components matched, the closer the match.
  38. </LI>
  39. </UL>
  40.  
  41. <P>
  42. The matching of resource names may be precisely defined by the <#3570#><TT>match-p</TT><#3570#>
  43. function shown in Figure~<A HREF=<tex2html_cr_mark>#fig:match-p#3571><tex2html_cr_mark></A>. <#3572#><TT>match-p</TT><#3572#> tests if a partial
  44. name matches a complete
  45. name/class.  If it does, then the value returned is a numerical score
  46. representing the closeness of the match (the greater the score, the closer the
  47. match). Comparison of names uses a function called <#3573#><TT>same-name-p</TT><#3573#>, which uses
  48. case-insensitive comparison if either name is a symbol, but  uses
  49. case-sensitive comparison if both names are strings.
  50. <A ID="3574"><tex2html_anchor_invisible_mark></A><A ID="3575"><tex2html_anchor_invisible_mark></A>
  51.  
  52. <P>
  53.  
  54. <DIV class="CENTER"><A ID="fig:match-p"><tex2html_anchor_mark></A><A ID="3577"><tex2html_anchor_mark></A>
  55. <TABLE>
  56. <CAPTION class="BOTTOM"><STRONG><#10560#>Figure<#10560#>:</STRONG>
  57. <#10561#>Matching Resource Names<#10561#></CAPTION>
  58. <TR><TD><tex2html_image_mark>#figure3576#</TD></TR>
  59. </TABLE>
  60. </DIV>
  61.  
  62.  
  63. <P>
  64. For example, assume that a resource database contains the 
  65. resource bindings shown in the previous example.
  66.  
  67. <P>
  68. <DIV class="CENTER">
  69. <TT></TT><TABLE CELLPADDING=3>
  70. <TR><TD ALIGN="LEFT"><TT>
  71. </TT> Resource Name<TT> </TT></TD>
  72. <TD ALIGN="LEFT"><TT> </TT> Resource Value<TT></TT></TD>
  73. </TR>
  74. <TR><TD ALIGN="LEFT"><TT> 
  75. </TT></TD>
  76. <TD ALIGN="LEFT"><TT></TT></TD>
  77. </TR>
  78. <TR><TD ALIGN="LEFT"><TT> 
  79. (mail screen-1 reply background) </TT></TD>
  80. <TD ALIGN="LEFT"><TT> 'green</TT></TD>
  81. </TR>
  82. <TR><TD ALIGN="LEFT"><TT> 
  83. (mail * background)       </TT></TD>
  84. <TD ALIGN="LEFT"><TT> 'red</TT></TD>
  85. </TR>
  86. <TR><TD ALIGN="LEFT"><TT> 
  87. (* button background)     </TT></TD>
  88. <TD ALIGN="LEFT"><TT> 'blue
  89. </TT></TD>
  90. </TR>
  91. </TABLE><TT>
  92. </TT>
  93. </DIV>
  94.  
  95. <P>
  96. If the <#3590#><TT>mail</TT><#3590#> application's <#3591#><TT>reply</TT><#3591#> button contact requests the
  97. value for its <#3592#><TT>background</TT><#3592#> resource, using the complete resource
  98. name <#3593#><TT>(mail screen-1 reply background)</TT><#3593#> and the complete resource
  99. class  <#3594#><TT>(contact-display root button fill)</TT><#3594#>, then
  100. each of the partial names in the database ``matches.''
  101.  
  102. <P>
  103. <DIV class="CENTER">
  104. <TT></TT><TABLE CELLPADDING=3>
  105. <TR><TD ALIGN="LEFT"><TT>
  106. (match-p '(mail screen-1 reply background) ...) </TT></TD>
  107. <TD ALIGN="LEFT"><TT> =  680</TT></TD>
  108. </TR>
  109. <TR><TD ALIGN="LEFT"><TT> 
  110. (match-p '(mail * background) ...)       </TT></TD>
  111. <TD ALIGN="LEFT"><TT> =  520</TT></TD>
  112. </TR>
  113. <TR><TD ALIGN="LEFT"><TT> 
  114. (match-p '(* button background) ...)     </TT></TD>
  115. <TD ALIGN="LEFT"><TT> =  24
  116. </TT></TD>
  117. </TR>
  118. </TABLE><TT>
  119. </TT>
  120. </DIV>
  121.  
  122. <P>
  123. However, <#3600#><TT>(mail screen-1 reply background)</TT><#3600#> is clearly the closest match and
  124. has the highest ``score.''
  125.  
  126. <P>
  127. The <#3601#><TT>xlib:get-resource</TT><#3601#> function uses the above algorithm to look up the
  128. resource value in a resource database which is the closest match to a given
  129. complete resource name and class.
  130. The most common access to resources occurs during contact initialization, using
  131. the complete resource name and class of the contact. The <#3602#><TT>resource</TT><#3602#> function
  132. may be used to return the value of a contact resource found at  initialization. The <#3603#><TT>resource</TT><#3603#> function also returns a resource value of the correct
  133. representation type. The <#3604#><TT>default-resources</TT><#3604#> function may be used to return
  134. the default values for contact resources.
  135.  
  136. <P>
  137. <#4733#>
  138. <#4545#><FONT SIZE="+1"><#3605#><B>resource Function, contact</B><#3605#></FONT><#4545#>
  139. <A ID="3606"><tex2html_anchor_invisible_mark></A>
  140. <A ID="3607"><tex2html_anchor_invisible_mark></A>
  141. <DIV class="RIGHT">
  142. <tex2html_image_mark>#tex2html_wrap_inline10579#
  143. </DIV><#4733#>
  144.  
  145. <P>
  146. <DIV class="RIGHT">
  147. <tex2html_image_mark>#tex2html_wrap_inline10582#
  148. </DIV>
  149.  
  150. <P>
  151. <#4734#>
  152. <#4548#><FONT SIZE="+1"><#3620#><B>default-resources Function</B><#3620#></FONT><#4548#> 
  153. <A ID="3621"><tex2html_anchor_invisible_mark></A>
  154. <DIV class="RIGHT">
  155. <tex2html_image_mark>#tex2html_wrap_inline10583#
  156. </DIV><#4734#>
  157.  
  158. <P>
  159. <DIV class="RIGHT">
  160. <tex2html_image_mark>#tex2html_wrap_inline10585#
  161. </DIV>
  162.  
  163. <P>
  164.  
  165.  =0 <#5409#>=0 <#5413#>